package br.com.officium.interceptor;

import static br.com.officium.constante.Roles.ADVOGADO;
import static br.com.officium.constante.Roles.SEM_PERMISSAO;
import javax.annotation.Resource;
import javax.annotation.security.DeclareRoles;
import javax.ejb.EJBAccessException;
import javax.ejb.SessionContext;
import javax.interceptor.AroundInvoke;
import javax.interceptor.InvocationContext;

/**
 * Interceptor para checar a criação e atualização de Processos e Recursos.
 *
 * @author Ivo
 */
@DeclareRoles(ADVOGADO)
public class SecurityCreateUpdateInterceptor {

    @Resource
    private SessionContext sessionContext;

    @AroundInvoke
    public Object verifyAccess(InvocationContext context) throws Exception {

        if (sessionContext.isCallerInRole(ADVOGADO)) {

            return context.proceed();

        }

        throw new EJBAccessException(SEM_PERMISSAO);

    }

}
